/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package py.una.pol.tesis.ii.wsrest;

import com.google.gson.Gson;
import com.sun.jersey.api.view.Viewable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.ejb.Stateless;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import org.apache.log4j.Logger;
import py.una.informatica.dto.Historial;
import py.una.informatica.dto.ListaPagRespuesta;
import py.una.informatica.dto.Persona;

/**
 * REST Web Service
 *
 * @author Leandro
 */
@Path("historial")
@Stateless
public class HistorialResource {

    @Context
    private UriInfo context;
 
    /**
     * Creates a new instance of PacientesResource
     */
    public HistorialResource() {
    }

    @GET
    @Path("/index")
    @Produces("text/html")
    public Response index(@Context HttpServletRequest req) {
        Map<String, Object> map = new HashMap<String, Object>();
        List<Persona> pacientes = new ArrayList<Persona>();
        Persona paciente1 = null;
        Persona paciente2 = null;
        try {
            HttpSession session = req.getSession(true);
            Logger.getLogger("").info("Session: " + session.getId());
            
            paciente1 = new Persona(1, 4457533, "Leandro", "Dr. Luque");
            
            paciente2 = new Persona(2, 3361242, "Cynthia", "Dr. Meza");
            
            pacientes.add(paciente1);
            pacientes.add(paciente2);
            
            List<String> permisos = new ArrayList<String>();
            permisos.add("P1");
            permisos.add("P2");
            permisos.add("P3");
            permisos.add("P4");
            
            map.put("idPaciente", pacientes.get(0).getIdPersona());
            map.put("pacientes", pacientes);
            map.put("permisos", permisos);
            map.put("usuario", "leandrol");
        } catch (Exception e) {
            Logger.getLogger("").info("Error al mostrar el ui historial: ", e);
        }

        return Response.ok(new Viewable("/historial", map)).build();
    }
   
    @GET
    @Path("/paciente/{id}")
    @Produces("application/json")
    public Response getHistorialPaciente(@Context HttpServletRequest req, 
                                @PathParam("id") String id) {
        Gson gson = new Gson();
        ListaPagRespuesta respuesta = new ListaPagRespuesta();
        List<Object> historiales = new ArrayList<Object>();        
        Historial historial1 = null;
        Historial historial2 = null;
        try {
            HttpSession session = req.getSession(true);
            Logger.getLogger("").info("HistorialResource.getHistorialPaciente, id=: " + id);
            Logger.getLogger("").info("HistorialResource.getHistorialPaciente: " + session.getId());

            historial1 = new Historial(1, "Dr. Juan", "12/03/2015", "presion no mayor a 12/8 y menor a 8", "10/8");
            
            historial2 = new Historial(2, "Dr. Pedro", "12/03/2015", "presion no mayor a 13/8 y menor a 8", "9/8");

            historiales.add(historial1);
            historiales.add(historial2);

            respuesta.setTotal(historiales.size());
            respuesta.setRows(historiales);

            Logger.getLogger("").info("Respuesta getHistorialPaciente: " + gson.toJson(historiales));
        } catch (Exception e) {
            historiales.add(0);
            historiales.add(null);
            Logger.getLogger("").info("Error en getHistorialPaciente", e);
        }

        return Response.ok(gson.toJson(historiales), MediaType.APPLICATION_JSON).build();
    }
    
    @GET
    @Path("/movil/paciente/{id}")
    @Produces("application/json")
    public Response getHistorialPacienteByMovil(@Context HttpServletRequest req, 
                                @PathParam("id") String id) {
        Gson gson = new Gson();
        ListaPagRespuesta respuesta = new ListaPagRespuesta();
        List<Object> historiales = new ArrayList<Object>();        
        Historial historial1 = null;
        Historial historial2 = null;
        try {
            HttpSession session = req.getSession(true);
            Logger.getLogger("").info("HistorialResource.getHistorialPaciente, id=: " + id);
            Logger.getLogger("").info("HistorialResource.getHistorialPaciente: " + session.getId());

            historial1 = new Historial(1, "Dr. Juan", "12/03/2015", "glucosa no mayor a 120 y menor a 100", "110");
            historial1.setDiagnostico("Diabetes");
            
            historial2 = new Historial(2, "Dr. Pedro", "12/03/2015", "presion no mayor a 13/8 y menor a 8", "9/8");
            historial2.setDiagnostico("Presión Alta");
            
            historiales.add(historial1);
            historiales.add(historial2);

            respuesta.setTotal(historiales.size());
            respuesta.setRows(historiales);

            Logger.getLogger("").info("Respuesta getHistorialPaciente: " + gson.toJson(historiales));
        } catch (Exception e) {
            historiales.add(0);
            historiales.add(null);
            Logger.getLogger("").info("Error en getHistorialPaciente", e);
        }

        return Response.ok("{\"items\":"+gson.toJson(historiales)+"}", MediaType.APPLICATION_JSON).build();
    }
}
